
$(function () {
    var detail = {
        swiper: '',
        postId:   $('#postId').attr('data-val') || '',
        touserId: $('#touserId').attr('data-val') || '',
        init: function () {
            this.event();
        },
        event: function () {
            this.getDetail();
            // 获取当前文章一共多少赞
            this.getMetas();
            // 获取当前用户是否点赞
            this.getMeta();
            // 获取当前文章一共多少收藏
            this.getCollects();
            // 获取当前用户是否收藏
            this.getCollect();
            // 获取当用用户是否对作者关注过
            this.getFocus();
            // 轮播初始化
            this.swiper();
            // 评论
            this.commentModal();
            // 回复
            this.replyComment();
            // 点赞 取消点赞
            this.metaClick();
            // 收藏 取消收藏
            this.collectClick();
            // 关注 取消关注
            this.focusClick();
        },
        // 获取列表详情
        getDetail: function () {
            // var self = this , ajax = new AjaxHelper();
            // ajax.get('/categories', '', function (data) {
            //     $.hideLoading();
            //     if (!data) $.toptips('分类获取失败！');
            //     self.categories = data;
            // });
        },
        // 获取当前文章一共多少赞
        getMetas: function () {
            var ajax = new AjaxHelper();
            ajax.get('/article/'+this.postId+'/metas', '', function (data) {
                // 还没有点过赞
                if (data.count > 10000) {
                    var num = '9999+';
                } else {
                    var num = data.count;
                }
                $('.meta').find('b').text(num);
                $.hideLoading();
            });            
        },
        // 获取当前用户是否已经点赞
        getMeta: function () {
            var ajax = new AjaxHelper();
            ajax.get('/article/'+this.postId+'/meta/get', '', function (data) {
                // 已经点过赞
                if (data.result != 0) {
                    $('.meta-btn').addClass('active').attr('data-id',data.meta._id);
                    $('.meta-btn').find('p').text('取消点赞');
                }
                $.hideLoading();
            });
        },
        // 获取当前文章一共多少收藏
        getCollects: function () {
            var ajax = new AjaxHelper();
            ajax.get('/article/'+this.postId+'/collects', '', function (data) {
                // 还没有点过赞
                if (data.count > 10000) {
                    var num = '9999+';
                } else {
                    var num = data.count;
                }
                $('.collection').find('b').text(num);
                $.hideLoading();
            });            
        },
        // 获取当前用户是否已经收藏
        getCollect: function () {
            var ajax = new AjaxHelper();
            ajax.get('/article/'+this.postId+'/collect/get', '', function (data) {
                // 已经收藏过
                if (data.result == 1) {
                    $('.collect-btn').addClass('active').attr('data-id',data.collect._id);
                    $('.collect-btn').find('p').text('取消收藏');
                }
                $.hideLoading();
            });
        },
        // 获取当用用户是否对作者关注过
        getFocus: function () {
            var ajax = new AjaxHelper();
            ajax.get('/user/'+this.touserId+'/focus', '', function (data) {
                // 已经关注过                
                if (data.result == 1) {
                    $('.focus-btn').addClass('cancel-focus').text("取消关注");
                }
                $.hideLoading();
            });
        },        
        // 点赞
        metaClick: function () {
            var self = this;
            $('.meta-btn').on('click', function () {
                var that = $(this);
                // 已经点过赞了
                if (that.hasClass('active')) {
                    // 获取点赞过后生成的id
                    var metaId = $(this).attr('data-id');
                    if (!metaId) {
                        $.toptips('不能点赞，请联系管理员！')
                        return false;
                    }
                    // 取消点赞
                    self.metaAjax(true, '/article/'+metaId+'/meta/del', that);
                }
                else {
                    // 点赞
                    self.metaAjax(false ,'/article/'+self.postId+'/meta/add', that);
                }
            });
        },
        // 点赞 取消点赞 ajax方法
        metaAjax: function (flag, url,obj) {
            var self = this,
                ajax = new AjaxHelper();

            ajax.get(url, '', function (data) {
                // 成功
                if (data.result == 1) {
                    // 点赞成功
                    if (!flag) {
                        obj.addClass('active').attr('data-id', data.meta._id);
                        obj.find('p').text('取消点赞');
                    } 
                    // 取消点赞成功
                    else {
                        obj.removeClass('active').removeAttr('data-id');
                        obj.find('p').text('点赞');
                    }
                    // 刷新当前点赞人数
                    self.getMetas();

                } else {
                    $.toptips('操作失败！');
                }
            });            
        },
        // 收藏
        collectClick: function () {
            var self = this;
            $('.collect-btn').on('click', function () {
                var that = $(this);
                // 已经收藏过了
                if (that.hasClass('active')) {
                    // 获取收藏过后返回的id
                    var collectId = $(this).attr('data-id');
                    if (!collectId) {
                        $.toptips('不能收藏，请联系管理员！')
                        return false;
                    }
                    // 取消收藏
                    self.collectAjax(true, '/article/'+collectId+'/collect/del', that);
                }
                else {
                    // 收藏
                    self.collectAjax(false ,'/article/'+self.postId+'/collect/add', that);
                }
            });
        },
        // 收藏 取消收藏 ajax方法
        collectAjax: function (flag, url,obj) {
            var self = this,
                ajax = new AjaxHelper();

            ajax.get(url, '', function (data) {
                // 成功
                if (data.result == 1) {
                    // 收藏成功
                    if (!flag) {
                        obj.addClass('active').attr('data-id', data.collect._id);
                        obj.find('p').text('取消收藏');
                    } 
                    // 取消收藏成功
                    else {
                        obj.removeClass('active').removeAttr('data-id');
                        obj.find('p').text('收藏');
                    }
                    // 刷新当前收藏人数
                    self.getCollects();
                } else {
                    $.toptips('操作失败！');
                }
                $.hideLoading();
            });            
        },
        // 关注
        focusClick: function () {
            var self = this;
            $('.focus-btn').on('click', function () {
                var that = $(this);
                // 已经关注过了
                if (that.hasClass('cancel-focus')) {
                    // 获取当前作者的id
                    if (!self.touserId) {
                        $.toptips('不能关注，请联系管理员！')
                        return false;
                    }
                    // 取消关注
                    self.focusAjax(true, '/user/'+self.touserId+'/focus/del', that);
                }
                else {
                    // 新增关注
                    self.focusAjax(false ,'/user/'+self.touserId+'/focus/add', that);
                }
            });
        },
        // 关注 取消关注 ajax方法
        focusAjax: function (flag, url,obj) {
            var self = this,
                ajax = new AjaxHelper();

            ajax.get(url, '', function (data) {
                // 成功
                if (data.result == 1) {
                    // 关注成功
                    if (!flag) {
                        obj.addClass('cancel-focus').text("取消关注");
                    } 
                    // 取消关注成功
                    else {
                        obj.removeClass('cancel-focus').text("关注");
                    }
                } else {
                    $.toptips('操作失败！');
                }
                $.hideLoading();
            });
        },
        // 轮播
        swiper: function () {
            var self = this;
            self.swiper = new Swiper('.swiper-container',{});
        },
        // 评论框弹出
        commentModal: function () {
            var self = this;
            $('.comments-btn').on('click', function () {
                self.commentModel();
            });
        },
        // 回复评论
        replyComment: function () {
            var self = this;
            $('body').on('click', '.reply-btn', function () {
                var name = $(this).closest('.weui-comment-item').find('.userinfo .nickname').text();
                self.commentModel(name);
            });
        },
        // 评论回复模板
        commentModel: function (name) {
            var t = '';
                t += '<div class="comments-input">';
                    if (name != '' && name != undefined) {
                        t += '<label id="reply-name">@'+name+':</label>'
                        t += '<textarea style="border:1px solid gainsboro; width: 100%;height: 80px;outline: none;text-indent: 10px;line-height: 18px;"></textarea>';
                    }
                    else {
                        t += '<textarea style="border:1px solid gainsboro; width: 100%;height: 80px;outline: none;text-indent: 10px;line-height: 18px;"></textarea>';
                    }
                t += '</div>';
            $.modal({
              title: "",
              text: t.toString(),
              buttons: [
                { text: "确定", onClick: function(){ 
                    if (name != "" && name != undefined) {
                        var val = '<a href="javaScript:;" class="reply-name">'+$('#reply-name').text()+'</a><p>'+$('.weui_dialog .comments-input').find('textarea').val()+'</p>';
                    } else {
                        var val = '<p>'+$('.weui_dialog .comments-input').find('textarea').val()+'</p>';
                    }
                    var user = JSON.parse($('#user-news').attr('data-val'));
                    var postId =  $('#postId').attr('data-val');
                    if (val != undefined && val != "") {
                        var data = {
                            "userid": user._id,
                            "username": user.username,
                            "userheadimgurl": user.headimgurl,
                            "body": val
                        };
                        var ajax = new AjaxHelper();
                        ajax.post('/article/'+postId+'/comment', data , function (data) {
                            console.log(data.comment.body)
                            if (data.result == 0) {
                                var t = simpleTpl();
                                t._('<li class="weui-comment-item">')
                                    ._('<div class="userinfo">')
                                        ._('<strong class="nickname">'+data.comment.username+'</strong>')
                                        ._('<img class="avatar" src="'+data.comment.userheadimgurl+'">')
                                    ._('</div>')
                                    ._('<div class="weui-comment-msg">'+data.comment.body+'')
                                    ._('</div>')
                                    ._('<div class="comments-other">')
                                        ._('<span class="time">'+moment(data.comment.created_at,'YYYYMMDD').fromNow()+'</span>')
                                        ._('<span class="comments reply-btn">回复</span>')
                                    ._('</div>')
                                t._('</li>')
                                $('.weui-comment').prepend(t.toString());
                                $('.no-comments').remove();
                                $('.item-other').find('.comments').find('b').text(data.comments_len);
                                $.hideLoading();
                            } 
                        }, function (err) {
                            $.toptips('评论失败');
                            $.hideLoading();
                        });
                    } else {
                        $.toptips('请填写评论内容！');
                    } 
                } },
                { text: "取消", className: "default"},
              ]
            });
        }
    }
    detail.init();    
})